Пытается получить следующие celt элементов последовательности перечисления и возвращает их в массиве, на который указывает rgvar.
HRESULT Next ( unsigned long celt, VARIANT FAR* rgvar, unsigned long FAR* pceltFetched );
Параметры
celt
Число запрашиваемых элементов.
rgvar
Массив, в который помещаются возвращающие элементы. Размер
массива должен быть не менее celt.
pceltFetched
Указатель на
число элементов, возвращенных в rgvar, или NULL.
Коды возврата
Из возвращенного HRESULT получают один из следующих
кодов возврата:
| Код возврата | Значение |
| S_OK | Число возвращенных элементов равно celt. |
| S_FALSE | Число возвращенных элементов меньше celt. |
Комментарии
Если число оставшихся элементов меньше запрошенного,
Next возвращает только оставшиеся элементы. Фактическое число элементов
передается через *pCeltFetched, если этот параметр не равен
NULL.
Пример
Следующий код реализует IEnumVARIANT::Next для наборов из
примера Lines (файл Enumvar.cpp).
STDMETHODIMP
CEnumVariant::Next(ULONG cElements, VARIANT FAR* pvar, ULONG FAR* pcElementFetched)
{
HRESULT hr;
ULONG l;
long l1;
ULONG l2;
if (pcElementFetched != NULL) *pcElementFetched = 0;
for (l=0; l< cElements; l++) Variantlnit(&pvar[l]);
// Получить следующие cElements элементов.
for (l1=m_lCurrent, 12=0; l1<(long)(m_lLBound+m_cElements) && 12<cElements; l1++, 12++)
{
hr = SafeArrayGetElement(m_psa, &l1, &pvar[12]);
if (FAILED(hr)) goto error;
// Возвратить число полученных элементов.
if (pcElementFetched != NULL)
*pcElementFetched = 12;
m_lCurrent = l1;
return (12 < cElements) ? ResultFromScode(S_FALSE) : NOERROR;
error:
for (1=0; l<cElements; l++) VariantClear(&pvar[l]);
return hr;